package helpers

import "errors"

/**
封装请求返回值
结构体中的声明变量首字母必须大写 不然无法被解析
*/
type Response struct {
	Code int         `json:"code"`
	Msg  string      `json:"message"`
	Data interface{} `json:"data"`
}

//重载的简单实现方案
func ResultInfo(parameter ...interface{}) *Response   {
	data,msg,code,err:=parameterInfo(parameter)
	if err!=nil{
		panic(err.Error())
	}
	return &Response{code, msg, data}

}

func  parameterInfo(args ...interface{})(data interface{},msg string,code int,err error){
	for i,p:=range args{
		switch i {
		case 0: data=p
		break
		case 1: msg=p.(string)
		break
		case 2: code=p.(int)
		break
		default:
			err= errors.New("参数有问题")
		}
	}
	return
}

//只有数据
func SuccessData(data interface{}) *Response {
	return &Response{1, "success", data}
}
//只有成功信息
func SuccessMsg() *Response {
	return &Response{1, "success", nil}
}
//只有错误信息
func FailedMsg(errMsg string) *Response {
	return &Response{0, errMsg, ""}
}
func AuthFailedMsg(errMsg string) *Response {
	return &Response{401, errMsg, ""}
}
func ErrorMsg(errMsg string,code int) *Response {
	return &Response{code, errMsg, nil}
}
